home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_gnu / adainc / i-cpoint.ads < prev    next >
Text File  |  1996-01-30  |  3KB  |  81 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                I N T E R F A C E S . C . P O I N T E R S                 --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.5 $                              --
  10. --                                                                          --
  11. -- This specification is adapted from the Ada Reference Manual for use with --
  12. -- GNAT.  In accordance with the copyright of that document, you can freely --
  13. -- copy and modify this specification,  provided that if you redistribute a --
  14. -- modified version,  any changes that you have made are clearly indicated. --
  15. --                                                                          --
  16. ------------------------------------------------------------------------------
  17.  
  18. generic
  19.    type Index is (<>);
  20.    type Element is private;
  21.    type Element_Array is array (Index range <>) of aliased Element;
  22.    Default_Terminator : Element;
  23.  
  24. package Interfaces.C.Pointers is
  25. pragma Preelaborate (Pointers);
  26.  
  27.    type Pointer is access all Element;
  28.  
  29.    function Value
  30.      (Ref        : in Pointer;
  31.       Terminator : in Element := Default_Terminator)
  32.       return       Element_Array;
  33.  
  34.    function Value
  35.      (Ref    : in Pointer;
  36.       Length : in ptrdiff_t)
  37.       return   Element_Array;
  38.  
  39.    Pointer_Error : exception;
  40.  
  41.    --------------------------------
  42.    -- C-style Pointer Arithmetic --
  43.    --------------------------------
  44.  
  45.    function "+" (Left : in Pointer;   Right : in ptrdiff_t) return Pointer;
  46.    function "+" (Left : in ptrdiff_t; Right : in Pointer)   return Pointer;
  47.    function "-" (Left : in Pointer;   Right : in ptrdiff_t) return Pointer;
  48.    function "-" (Left : in Pointer;   Right : in Pointer)   return ptrdiff_t;
  49.  
  50.    procedure Increment (Ref : in out Pointer);
  51.    procedure Decrement (Ref : in out Pointer);
  52.  
  53.    pragma Convention (Intrinsic, "+");
  54.    pragma Convention (Intrinsic, "-");
  55.    pragma Convention (Intrinsic, Increment);
  56.    pragma Convention (Intrinsic, Decrement);
  57.  
  58.    function Virtual_Length
  59.      (Ref        : in Pointer;
  60.       Terminator : in Element := Default_Terminator)
  61.       return       ptrdiff_t;
  62.  
  63.    procedure Copy_Terminated_Array
  64.      (Source     : in Pointer;
  65.       Target     : in Pointer;
  66.       Limit      : in ptrdiff_t := ptrdiff_t'Last;
  67.       Terminator : in Element := Default_Terminator);
  68.  
  69.    procedure Copy_Array
  70.      (Source  : in Pointer;
  71.       Target  : in Pointer;
  72.       Length  : in ptrdiff_t);
  73.  
  74. private
  75.    pragma Inline ("+");
  76.    pragma Inline ("-");
  77.    pragma Inline (Decrement);
  78.    pragma Inline (Increment);
  79.  
  80. end Interfaces.C.Pointers;
  81.